PWM led fade

Contenido

Circuito con un led que se iluminará poco a poco y se apagará poco a poco usando una señal PWM.

Circuito
#include <avr/io.h>
#include <util/delay.h>


static inline void initTimer(void) {
  TCCR1A |= (1 << WGM10) | (1 << WGM12);
  TCCR1B |= (1 << CS11);
  TCCR1A |= (1 << COM1A1);
}

int main(void) {

  uint8_t brightness = 0;
  uint8_t direction;

  initTimer();

  DDRB |= (1 << PB1);

  while (1) {
    if (brightness == 0) {
      direction = 1;
    }

    if (brightness == 255) {
      direction = -1;
    }

    brightness += direction;
    OCR1A = brightness;

    _delay_ms(5);

  }
  return 0;
}
Tags

AVR | PWM | fade out | fade in